<?php
// 步骤1验证错误
// 第二步验证格式
// 第三步验证大小
// 第四部验证是否是http上传
// 第五部上传实现

function check($file,$allow=array('image/jpeg','image/png','image/gif'),$size=123654){
    
}

function check($file){
    //1验证是否有误
    if($_FILES['image']['error']!=0){
        switch($_FILES['image']['error']){
                case 1:
                    return "文件大小超过了php.ini中允许的最大值";
                case 2:
                    return "文件大小超过了表单允许的最大值";
                case 3:
                    return "只有部分文件上传";
                case 4:
                    return "没有文件上传";
                case 6:
                    return "找不到临时文件";
                case 7:
                    return "文件写入失败";
        }
    }
    //2验证格式
    $allow=array('image/jpeg', 'image/png','image/gif');
    // 创建一个fileinfo 资源
    $info=finfo_open(FILEINFO_MIME_TYPE);
    // 将finfo资源和文件做比较
    $min= finfo_file($info,$_FILES['image']['tmp_name']);//获取文件信息;   
    // return in_array($min,$allow)?"":"只能上传". implode($allow)."的格式文件"; 
    if(!in_array($min,$allow)){
        return "只能上传". implode(",",$allow)."的格式文件";
    }
    //3.验证大小
    // $size=123654;
    $k=1024;
    if($_FILES['image']['size']>$size){
        return "文件不能超过".floor($size/1024)."k";
    }
    //第四部,验证是否是http上传
    if(is_uploaded_file($_FILES['image']['tmp_name'])){
        $path = uniqid('user') . rand(100, 500) . $_FILES['image']['name'];
        echo "上传成功";
    }else{
        return '文件不是http POst上传的<br>';
    }
}
if(!empty($_POST)){
    echo check();
}

?>



<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <form action="" method="post" enctype="multipart/form-data">
    <input type="file" name='image'>
    <input type="submit" value="上传" name='sub'>
    </form>   
</body>

</html>